package com.cenluan.session;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

/**
 * session管理
 */
public class SessionManager {
	/**
	 * 在线用户的session map
	 */
	private static final Map<String, HttpSession> userMap = new HashMap<String, HttpSession>();
	/**
	 * 游客的session map
	 */
	private static final Map<String, HttpSession> guestMap = new HashMap<String, HttpSession>();

	/**
	 * 记录游客的session
	 * 
	 * @param session
	 */
	public static void addGuestSession(HttpSession session) {
		guestMap.put(session.getId(), session);
	}

	/**
	 * 删除游客的session
	 * 
	 * @param sessionId
	 */
	public static void removeGuestSession(String sessionId) {
		guestMap.remove(sessionId);
	}

	/**
	 * 添加用户的session
	 * 
	 * @param session
	 */
	public static void addUserSession(HttpSession session) {
		userMap.put(session.getId(), session);
	}

	/**
	 * 删除用户的session
	 * 
	 * @param sessionId
	 */
	public static void removeUserSession(String sessionId) {
		userMap.remove(sessionId);
	}

	/**
	 * 删除session，不管是用户还是游客的都删除
	 * 
	 * @param sessionId
	 */
	public static void removeSession(String sessionId) {
		guestMap.remove(sessionId);
		userMap.remove(sessionId);
	}

	/**
	 * 获取session，先从用户的session集合里找，找不到再去游客的session集合里找
	 * 
	 * @param sessionId
	 * @return
	 */
	public static HttpSession getSession(String sessionId) {
		HttpSession session = userMap.get(sessionId);
		if (session != null) {
			return session;
		}
		return guestMap.get(sessionId);
	}

	/**
	 * 使session失效
	 * 
	 * @param sessionId
	 */
	public static void invalidate(String sessionId) {
		HttpSession session = getSession(sessionId);
		if (session != null) {
			session.invalidate();
			removeSession(session.getId());
		}
	}

	/**
	 * 获取游客的数量
	 * 
	 * @return
	 */
	public static int getGuestCount() {
		return guestMap.size();
	}

	/**
	 * 获取用户的数量
	 * 
	 * @return
	 */
	public static int getUsetCount() {
		return userMap.size();
	}
}
